package com.ctshk.rpc.order.tour.service;

import com.ctshk.common.dto.Result;
import com.ctshk.rpc.order.tour.dto.SeriesOrderReceiptListDTO;
import com.ctshk.rpc.order.tour.dto.SeriesOrderReceiptListTouristDTO;
import com.ctshk.rpc.order.tour.dto.custom.CustomOrderReceiptDetailsPreviewDTO;
import com.ctshk.rpc.order.tour.dto.custom.CustomOrderReceiptInfoDTO;
import com.ctshk.rpc.order.tour.dto.custom.CustomOrderReceiptListCountDTO;
import com.ctshk.rpc.order.tour.dto.custom.CustomOrderReceiptListTouristDTO;
import com.ctshk.rpc.order.tour.req.SeriesOrderReceiptListReq;
import com.ctshk.rpc.order.tour.req.SeriesOrderReceiptListTouristReq;
import com.ctshk.rpc.order.tour.req.custom.*;

/**
 * <p>
 * 系列团订单收据 服务类
 * </p>
 *
 * @author 谭响
 * @since 2021-02-01
 */
public interface ISeriesOrderReceiptService {

    /**
     * 列表
     */
    CustomOrderReceiptListCountDTO list(OrderReceiptListReq req);
 //   SeriesOrderReceiptListDTO list(SeriesOrderReceiptListReq req);

    /**
     * 列表游客
     */
 //   SeriesOrderReceiptListTouristDTO listTourist(SeriesOrderReceiptListTouristReq req);

    /**
     * 查看收據
     * @param req
     * @return
     */
    Result<CustomOrderReceiptInfoDTO> detail(CustomOrderReceiptDetailsIdReq req);

    /**
     * 打印收據-旅客列表
     * @param req
     * @return
     */
    CustomOrderReceiptListTouristDTO listPrint(CustomOrderReceiptListTouristReq req);

    /**
     * 打印
     * @param req
     * @return
     */
    Result printReceipt(CustomOrderReceiptDetailsRePrintReq req);

    /**
     * 打印整單收據
     * @param req
     * @return
     */
    Result invalidAll(OrderReceiptPrintAllReq req);

    /**
     * 批量打印
     * @param req
     * @return
     */
    Result printBatch(CustomOrderReceiptPrintBatchReq req);

    /**
     * 收據作废
     * @param req
     * @return
     */
    Result invalid(CustomOrderReceiptInvalidReq req);

    /**
     * 重印收據
     * @param req
     * @return
     */
    Result<CustomOrderReceiptDetailsPreviewDTO> rePrint(CustomOrderReceiptDetailsRePrintReq req);

    /**
     * 取消
     * @param id
     * @param userId
     * @return
     */
    Result cancel(Long id, Long userId);
}
